using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace SynoManager.GUI
{
    /// <summary>
    /// Interface that is presented to <see cref="IGuiPlugin">Plugins</see> in the <see cref="IGuiPlugin.InitializeHost" /> function, enabling them to hook on the graphical user interface.
    /// </summary>
    public interface IHost
    {
        /// <summary>
        /// Gets the menu.
        /// </summary>
        /// <value>The menu.</value>
        MenuStrip Menu { get; }

        /// <summary>
        /// Gets the tool strips.
        /// </summary>
        /// <value>The tool strips.</value>
        ToolStripContainer ToolStrips { get; }

        /// <summary>
        /// Gets the status strip.
        /// </summary>
        /// <value>The status strip.</value>
        StatusStrip StatusStrip { get; }

        /// <summary>
        /// Gets the notify icon.
        /// </summary>
        /// <value>The notify icon.</value>
        NotifyIconEx NotifyIcon { get;  }

        /// <summary>
        /// Gets wether the host is connected to a client
        /// </summary>
        bool IsConnected { get; }

        bool IsValidConnection { get; }

        event EventHandler ConnectionStateChanged;
    }
}
